/**
 * 防抖函数
 * @param fn 回调函数
 * @param delayTime 延迟执行毫秒数
 */
export const debounce = (fn: Function, delayTime: number = 300) => {
  let timer: NodeJS.Timeout | null = null

  return function (this: any, ...args: any) {
    timer && clearTimeout(timer) && (timer = null)

    timer = setTimeout(() => {
      fn.apply(this, args)
    }, delayTime)
  }
}
// 时间毫秒格式化处理 2022-10-01 09:30:00
export const formartDate = (originVal: string, fmt: string) => {
  const dt = new Date(originVal)
  const opt = {
    yyyy: String(dt.getFullYear()), // 年
    MM: (dt.getMonth() + 1 + '').padStart(2, '0'), // 月
    dd: (dt.getDate() + '').padStart(2, '0'), // 日
    HH: (dt.getHours() + '').padStart(2, '0'), // 时
    mm: (dt.getMinutes() + '').padStart(2, '0'), // 分
    ss: (dt.getSeconds() + '').padStart(2, '0'), // 秒
  }

  for (const k in opt) {
    const reg = new RegExp('(' + k + ')').exec(fmt)
    if (reg) {
      fmt = fmt.replace(reg[1], opt[k] as string)
      // console.log(fmt)
    }
  }
  return fmt
}
// 歌曲毫秒格式化处理 03:30
export const formatSongTime = (dt: string) => {
  // console.log('歌曲时间格式化')
  let duration = Number(dt)
  duration = duration >= 0 ? duration / 1000 : 0
  const m = (Math.floor(duration / 60) + '').padStart(2, '0')
  const s = (Math.floor(duration % 60) + '').padStart(2, '0')
  return `${m}:${s}`
}
